'''
map(func, lst)，将传入的函数变量func作用到lst变量的每个元素
reduce(func，lst)，其中func必须有两个参数。
每次func计算的结果继续和序列的下一个元素做累积计算
filter(func, lst)函数用于过滤序列,
 			过滤掉不符合条件的元素, 返回一个 filter 对象
1）计算list1序列中各个数字的2次方
   list1=[1,2,3,4,5]
2）计算list2序列中各个数字的累加和
   list2=[1,2,3,4,5]
3）过滤掉list3中的奇数，使其元素均为偶数
   list3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

'''
from functools import reduce

list1 = [1, 2, 3, 4, 5]
# 推导式
li1 = [i ** 2 for i in list1]
print(li1)
# 高阶函数
r1 = map(lambda a: a ** 2, list1)
print(list(r1))

list2 = [1, 2, 3, 4, 5]


def func(a, b):
    return a + b


r2 = reduce(func, list2)
print(r2)
r3 = reduce(lambda a, b: a + b, list2)
print(r3)

list3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
li3 = [i for i in list3 if i % 2 == 0]
print(li3)

r4 = filter(lambda a: a if a % 2 == 0 else '', list3)
print(list(r4))
r5 = filter(lambda a: a % 2 == 0, list3)
print(list(r5))
